import { defineStore } from "pinia";
// 1、定义并导出容器
/**
 * @params1:容器ID，唯一，后面pinia会把所有的容器挂载到根容器
 * @params2：选项对象
 * @返回值：一个函数调用得到容器实例
 */
export const useMainStore = defineStore("main", {
  /**
   * 1必须是函数：放置服务端渲染的时候避免交叉请求导致状态污染
   * 2.必须是箭头函数：为了更好的类型推导
   */
  state: () => {
    return {
      count: 0,
      foo: "lky",
      arr: [1, 2, 3, 4],
    };
  },
  getters: {
    // 这里传state,也可以不传，但使用this不能推导返回值类型，需要手动赋值
    pushArr():number {
      console.log("getters调用了");
      return this.arr.push(10)
    }
  },
  actions: {
    // 这里的参数仅仅是使用的 时候传过来，没有：state、getter、……
    changeState(num:number) {
      this.count+=num;
      this.foo = "newlky";
      this.arr.push(4);
    },
  },
});
// 2、使用容器的state

// 3、修改state

// 4、容器中action的使用
